1. Field of the Invention
This invention relates generally to methods and apparatus for software tools for an executable program and more particularly for identifying modules and associating classes with each of the modules of the executable program.
2. Description of the Related Art
Downloading applications via a distributed network, such as the Internet, offers many enticing advantages to both consumers and software companies. However, as the sophistication and the size of the applications increases, so to does the time required to download the applications. Unfortunately, a user with a dial up modem connection is essentially discouraged from downloading applications via the Internet because of the download time.
FIG. 1 illustrates block diagram 100 depicting the prior art manner of downloading an executable program from the Internet to run a Java application through a web browser such as Internet Explorer™ or Netscape Navigator™. Server 102 has a hyper text mark-up language (HTML) page 104. The HTML page 104 is downloaded to the client 108 through a web browser 110 via the Internet 106. An ActiveX control is included in the web browser or downloaded to the client 108. The ActiveX control includes the Object linking and embedding (OLE) control (OCX) 114, a zip file 116 which includes Java programs and class files and an .inf file which provides the system with the necessary information to install the OCX 114 and the zip file 116. The ActiveX 112 control executes the Java programs from the zip file 116. The OCX, Zip file and .inf files are packaged in a .cab file. Accordingly, the ActiveX installs the .cab file and decompress the zip file and run the different Java applications through the web browser.
The impediments imposed by the prior art method of downloading the application, as described with reference to FIG. 1, are responsible for discouraging users from downloading applications over the Internet. For example, a typical .cab file would take approximately over five minutes to download and install using a 56K dial-up modem. Furthermore, the entire .cab file must be downloaded prior to the application being run. As the zip file contains all the classes for the Java application, the user must wait for all the classes to be downloaded even if the user does not use some of the classes. This wait time becomes longer as the functionality of the software is enhanced or more features are added since the .cab file grows larger.
While the problem exists with initial downloads of applications, it also extends to modifications to current applications. For example, if a 1 Kilobyte modification is made to an existing program for a new revision or an update, then the user will have to download the complete application or receive a disk with the revised application. In an effort to contain costs, companies are encouraging users to download files over the Internet rather than shipping compact discs (CD) or floppy disks for new or revised applications. Since the costs associated with the CD or floppy is ultimately passed on to the consumer, it would also benefit the consumer if an application could be conveniently downloaded through the Internet. Although there is the possibility to provide patches in some instances, the management of patches becomes unwieldy, thus preventing the use of patches for updates. Furthermore, patches fail to address the concerns relating to the initial downloading of the program.
Another contributing factor to the excessive time required to download an executable program from the Internet is the requirement that the entire program, including all feature functionality associated with the program, be downloaded. Because of the lack of tools available to subdivide an executable program into modules where it is known how each of the classes is used by the module, the entire application must be downloaded. It is prohibitively laborious to manually analyze a sophisticated code to map the interaction of the various classes and modules. As programs become more complex, manual analysis is further put out of reach simply because of the size of the program. Even a minor change in the code may require that a comprehensive manual analysis be undertaken once again. Furthermore, in order to attempt to manually analyze the program it is necessary to have the expertise of the author of the code available, a luxury often not available in the current fast paced environment.
As a result, there is a need to solve the problems of the prior art to provide a tool for associating classes in groups to create modules of the executable program capable of being independently downloaded via a distributed network such as the Internet.